package Vista;

import Entidades.*;
import Logica.FactoryVistas;
import Logica.LogicaAplicacion;
import Logica.LogicaDispositivo;
import Logica.LogicaLugar;
import Logica.LogicaProveedorPregunta;
import java.awt.Color;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import java.awt.Dimension;
import java.awt.Toolkit;

/**
 *
 * @author Puma
 */
public class RegistroInternetDedicado extends javax.swing.JFrame implements Runnable {
    
    private Pattern patron = Pattern.compile("[A-Z,a-z,&%$#@!()*^]");
    private Matcher matcher = null;
    private Boolean estadoFinal = false;
    private int cuentasTotales = 0;
    private int minutos = 0, segundos = 0, horas = 0;
    private Boolean inicio = true;
    private Thread t;
    private ArrayList<Proveedor> proveedores = new ArrayList<Proveedor>();
    private Boolean esUnProveedor = false;
    private ArrayList servicios = null;
    private ArrayList<Historica> inserts = new ArrayList<Historica>();
    private int numPreg = 7;
    private int posicionActual;
    private Boolean fuePrevia = false;
    private Historica historica = null;
    private Boolean primeraVez = true;

    /**
     * Creates new form RegistroEnlancesDedicados
     */
    public RegistroInternetDedicado(int minutos, int segundos, int horas, ArrayList servicios) {
        initComponents();
        jBAgregarProveedorNuevo.setEnabled(false);
        jComboPaisesCiudadesDinamico.setVisible(false);
        jComboVelocidadesDinamico.setVisible(false);
        jTCantidad.setVisible(false);
        jCProveedores.setVisible(false);
        jBAgregarTabla.setVisible(false);
        this.minutos = minutos;
        this.segundos = segundos;
        this.horas = horas;
        this.servicios = servicios;
        iniciarReloj();
    }

     public RegistroInternetDedicado(int minutos,int segundos, int horas, ArrayList servicios,int posicionActual){
        initComponents();
        jBAgregarProveedorNuevo.setEnabled(false);
        jComboPaisesCiudadesDinamico.setVisible(false);
        jComboVelocidadesDinamico.setVisible(false);
        jTCantidad.setVisible(false);
        jCProveedores.setVisible(false);
        jBAgregarTabla.setVisible(false);
        jComboPaisesCiudadesDinamico.setVisible(false);
        jComboVelocidadesDinamico.setVisible(false);
        jTCantidad.setVisible(false);
        jCProveedores.setVisible(false);
        jBAgregarTabla.setVisible(false);
        jBAgregarProveedorNuevo.setEnabled(false);
        this.minutos = minutos;
        this.segundos = segundos;
        this.horas = horas;
        this.servicios = servicios;
        this.setPosicionActual(posicionActual);
        iniciarReloj();
        agregarPantalla();
        System.out.println("Posicion actual: "+posicionActual);
        this.jComboPaisesCiudadesDinamico.setVisible(false);
            this.jCProveedores.setVisible(false);
            this.jTCantidad.setVisible(false);
            this.jBAgregarTabla.setVisible(false);
    }

    public RegistroInternetDedicado() {
        initComponents();
        jComboPaisesCiudadesDinamico.setVisible(false);
        jComboVelocidadesDinamico.setVisible(false);
        jTCantidad.setVisible(false);
        jCProveedores.setVisible(false);
        jBAgregarTabla.setVisible(false);
        jBAgregarProveedorNuevo.setEnabled(false);
    }
    
    private void iniciarReloj() {
        t = new Thread(this);
        t.start();
    }
    public Boolean getEstadoFinal() {
        return estadoFinal;
    }

    public void setEstadoFinal(Boolean estadoFinal) {
        this.estadoFinal = estadoFinal;
    }
    private void agregarPantalla(){
        LogicaAplicacion.agregarPantallaLista(new PantallaAplicacion(this, numPreg));
    }

    public Boolean getFuePrevia() {
        return fuePrevia;
    }

    public void setFuePrevia(Boolean fuePrevia) {
        this.fuePrevia = fuePrevia;
    }

    public ArrayList<Historica> getInserts() {
        return inserts;
    }

    public void setInserts(ArrayList<Historica> inserts) {
        this.inserts = inserts;
    }

     public void hacerVisible(Boolean visible, int posicionActual){
        this.setPosicionActual(posicionActual);
        this.setFuePrevia(true);
        this.setInserts(new ArrayList<Historica>());
        this.setVisible(visible);
        System.out.println("Posicion actual: "+posicionActual);

        if (this.getEstadoFinal()){
         }
         else {
            this.jComboPaisesCiudadesDinamico.setVisible(false);
            this.jCProveedores.setVisible(false);
            this.jTCantidad.setVisible(false);
            this.jBAgregarTabla.setVisible(false);
         }
    }

    public void hacerVisibleDespuesSiguiente(Boolean visible, int posicionActual){
        this.setPosicionActual(posicionActual);
        this.setInserts(new ArrayList<Historica>());
        this.setVisible(visible);
        System.out.println("Posicion actual: "+posicionActual);

        if (this.getEstadoFinal()){
         }
         else {
            this.jComboPaisesCiudadesDinamico.setVisible(false);
            this.jCProveedores.setVisible(false);
            this.jTCantidad.setVisible(false);
            this.jBAgregarTabla.setVisible(false);
         }
    }

    public int getPosicionActual() {
        return posicionActual;
    }

    private void setPosicionActual(int posicionActual) {
        this.posicionActual = posicionActual;
    }
    
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLayeredPane3 = new javax.swing.JLayeredPane();
        jLabel1 = new javax.swing.JLabel();
        jTCuentas = new javax.swing.JTextField();
        jLayeredPane2 = new javax.swing.JLayeredPane();
        jLabel3 = new javax.swing.JLabel();
        jComboPaisesCiudades = new javax.swing.JComboBox();
        jLInformacionProveedor = new javax.swing.JLabel();
        jTCuentasProveedor = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        jBAgregarInfoTabla = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTInformacionProveedores = new javax.swing.JTable();
        JBPrev = new javax.swing.JButton();
        jBAceptar = new javax.swing.JButton();
        jLabel10 = new javax.swing.JLabel();
        jCProveedores = new javax.swing.JComboBox();
        jComboPaisesCiudadesDinamico = new javax.swing.JComboBox();
        jTCantidad = new javax.swing.JTextField();
        jBAgregarTabla = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        jComboVelocidades = new javax.swing.JComboBox();
        jComboVelocidadesDinamico = new javax.swing.JComboBox();
        jCProveedoresTabla = new javax.swing.JComboBox();
        jLabel13 = new javax.swing.JLabel();
        jLCuentaActualizada = new javax.swing.JLabel();
        jLLogo = new javax.swing.JLabel();
        jLTitulo = new javax.swing.JLabel();
        jLSponsor = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        jLayeredPane1 = new javax.swing.JLayeredPane();
        jLabel5 = new javax.swing.JLabel();
        jLabel11 = new javax.swing.JLabel();
        jLabel12 = new javax.swing.JLabel();
        jBFinalizarSeleccion = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTComentarios = new javax.swing.JTextArea();
        jCMovistar = new javax.swing.JCheckBox();
        jCCantv = new javax.swing.JCheckBox();
        jCSupercable = new javax.swing.JCheckBox();
        jCIntercable = new javax.swing.JCheckBox();
        jCMCI = new javax.swing.JCheckBox();
        jCNetUno = new javax.swing.JCheckBox();
        jCUnete = new javax.swing.JCheckBox();
        jCTutopia = new javax.swing.JCheckBox();
        jCIMPSAT = new javax.swing.JCheckBox();
        jTOtros = new javax.swing.JTextField();
        jCOtro = new javax.swing.JCheckBox();
        jBAgregarProveedorNuevo = new javax.swing.JButton();
        jLTimer = new javax.swing.JLabel();
        jBAceptarCantidad = new javax.swing.JButton();
        jLabel8 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Cantidad de Cuentas:");
        jLabel1.setBounds(50, 120, 138, 40);
        jLayeredPane3.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);
        jTCuentas.setBounds(180, 130, 38, 20);
        jLayeredPane3.add(jTCuentas, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel3.setText("Ciudad / Estado:");
        jLabel3.setBounds(10, 130, 110, 20);
        jLayeredPane2.add(jLabel3, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jComboPaisesCiudades.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione", "D. Capital", "Amazonas", "Anzoategui", "Apure", "Aragua", "Barinas", "Bolivar", "Carabobo", "Cojedes", "D. Amacuro", "Falcon", "Guarico", "Lara", "Merida", "Miranda", "Monagas", "N. Esparta", "Portuguesa", "Sucre", "Tachira", "Trujillo", "Yaracuy", "Vargas", "Zulia", "No sabe / No contesta", " " }));
        jComboPaisesCiudades.setEnabled(false);
        jComboPaisesCiudades.setBounds(140, 130, 160, 20);
        jLayeredPane2.add(jComboPaisesCiudades, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLInformacionProveedor.setText("Proveedor:");
        jLInformacionProveedor.setBounds(10, 60, 110, 14);
        jLayeredPane2.add(jLInformacionProveedor, javax.swing.JLayeredPane.DEFAULT_LAYER);
        jTCuentasProveedor.setBounds(140, 90, 38, 20);
        jLayeredPane2.add(jTCuentasProveedor, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel6.setText("Cantidad de Cuentas:");
        jLabel6.setBounds(10, 90, 120, 20);
        jLayeredPane2.add(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBAgregarInfoTabla.setText("Agregar a tabla >");
        jBAgregarInfoTabla.setEnabled(false);
        jBAgregarInfoTabla.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBAgregarInfoTablaActionPerformed(evt);
            }
        });
        jBAgregarInfoTabla.setBounds(170, 200, 150, 23);
        jLayeredPane2.add(jBAgregarInfoTabla, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jTInformacionProveedores.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Proveedor", "Ciudad / Estado", "Cantidad", "Velocidad"
            }
        ));
        jScrollPane1.setViewportView(jTInformacionProveedores);

        jScrollPane1.setBounds(360, 50, 480, 181);
        jLayeredPane2.add(jScrollPane1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        JBPrev.setText("< Prev");
        JBPrev.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JBPrevActionPerformed(evt);
            }
        });
        JBPrev.setBounds(700, 270, 73, 23);
        jLayeredPane2.add(JBPrev, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBAceptar.setText("Aceptar");
        jBAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBAceptarActionPerformed(evt);
            }
        });
        jBAceptar.setBounds(780, 270, 71, 23);
        jLayeredPane2.add(jBAceptar, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel10.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel10.setText("En caso de no saber la velocidad de cada cuenta, indique la máxima contratada.");
        jLabel10.setBounds(10, 30, 880, 14);
        jLayeredPane2.add(jLabel10, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCProveedores.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione", "Cantv", "Movistar / Telefónica", "CABLETEL / NETUNO", "Intercable", "Supercable", "MCI / Verizon", "Unete", "Tutopia", "IMPSAT / GLOBAL CROSSING", "Otro" }));
        jCProveedores.setBounds(360, 240, 110, 20);
        jLayeredPane2.add(jCProveedores, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jComboPaisesCiudadesDinamico.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione", "D. Capital", "Amazonas ", "Anzoategui", "Apure", "Aragua", "Barinas", "Bolivar", "Carabobo", "Cojedes", "D. Amacuro", "Falcon", "Guarico", "Lara", "Merida", "Miranda", "Monagas", "N. Esparta", "Portuguesa", "Sucre", "Tachira", "Trujillo", "Yaracuy", "Vargas", "Zulia", "No sabe / No contesta" }));
        jComboPaisesCiudadesDinamico.setBounds(490, 240, 100, 20);
        jLayeredPane2.add(jComboPaisesCiudadesDinamico, javax.swing.JLayeredPane.DEFAULT_LAYER);
        jTCantidad.setBounds(610, 240, 90, 20);
        jLayeredPane2.add(jTCantidad, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBAgregarTabla.setText("+");
        jBAgregarTabla.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBAgregarTablaActionPerformed(evt);
            }
        });
        jBAgregarTabla.setBounds(840, 240, 40, 23);
        jLayeredPane2.add(jBAgregarTabla, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel4.setText("Velocidad:");
        jLabel4.setBounds(10, 170, 110, 20);
        jLayeredPane2.add(jLabel4, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jComboVelocidades.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione", "Alta", "Media", "Baja", "No sabe / No contesta" }));
        jComboVelocidades.setEnabled(false);
        jComboVelocidades.setBounds(140, 170, 160, 20);
        jLayeredPane2.add(jComboVelocidades, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jComboVelocidadesDinamico.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione", "Alta", "Media", "Baja", "No sabe / No contesta" }));
        jComboVelocidadesDinamico.setBounds(720, 240, 100, 20);
        jLayeredPane2.add(jComboVelocidadesDinamico, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCProveedoresTabla.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione" }));
        jCProveedoresTabla.setBounds(140, 60, 160, 20);
        jLayeredPane2.add(jCProveedoresTabla, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel13.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel13.setText("De las cuentas que posee cuantas tiene con cada proveedor, en cuales estados del país se encuentran ubicadas y cuál es la velocidad que tiene contratada?");
        jLabel13.setBounds(10, 10, 910, 14);
        jLayeredPane2.add(jLabel13, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLCuentaActualizada.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jLCuentaActualizada.setText("Cuentas faltantes por registrar: X");
        jLCuentaActualizada.setBounds(20, 250, 290, 30);
        jLayeredPane2.add(jLCuentaActualizada, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLayeredPane2.setBounds(6, 380, 920, 300);
        jLayeredPane3.add(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLLogo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Vista/Imagenes/DatinvestLogo.png"))); // NOI18N
        jLLogo.setBounds(10, 10, 80, 80);
        jLayeredPane3.add(jLLogo, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLTitulo.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
        jLTitulo.setText(".:: Instrumento de emprendedores - Planilla de servicio Internet Dedicado::. ");
        jLTitulo.setBounds(90, 20, 590, 14);
        jLayeredPane3.add(jLTitulo, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLSponsor.setText("Desarrollado para Datinvest C.A");
        jLSponsor.setBounds(110, 40, 220, 14);
        jLayeredPane3.add(jLSponsor, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel9.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel9.setText("¿Cuántas cuentas de internet tiene contratada la empresa/institución en este momento?");
        jLabel9.setBounds(10, 100, 560, 14);
        jLayeredPane3.add(jLabel9, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel5.setText("Comentarios Adicionales del entrevistado:");
        jLabel5.setBounds(420, 50, 310, 14);
        jLayeredPane1.add(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel11.setText("Proveedores:");
        jLabel11.setBounds(10, 40, 140, 14);
        jLayeredPane1.add(jLabel11, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel12.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel12.setText("Que proveedores del servicio internet Dedicado esta contratando actualmente?");
        jLabel12.setBounds(0, 20, 530, 14);
        jLayeredPane1.add(jLabel12, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBFinalizarSeleccion.setText("Finalizar Selección");
        jBFinalizarSeleccion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBFinalizarSeleccionActionPerformed(evt);
            }
        });
        jBFinalizarSeleccion.setBounds(20, 190, 170, 23);
        jLayeredPane1.add(jBFinalizarSeleccion, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jTComentarios.setColumns(20);
        jTComentarios.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jTComentarios.setRows(5);
        jScrollPane2.setViewportView(jTComentarios);

        jScrollPane2.setBounds(420, 70, 410, 140);
        jLayeredPane1.add(jScrollPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCMovistar.setBackground(new java.awt.Color(255, 255, 255));
        jCMovistar.setText("Movistar / Telefónica");
        jCMovistar.setBounds(20, 80, 180, 23);
        jLayeredPane1.add(jCMovistar, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCCantv.setBackground(new java.awt.Color(255, 255, 255));
        jCCantv.setText("Cantv");
        jCCantv.setBounds(20, 60, 120, 23);
        jLayeredPane1.add(jCCantv, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCSupercable.setBackground(new java.awt.Color(255, 255, 255));
        jCSupercable.setText("Supercable");
        jCSupercable.setBounds(20, 140, 170, 23);
        jLayeredPane1.add(jCSupercable, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCIntercable.setBackground(new java.awt.Color(255, 255, 255));
        jCIntercable.setText("Intercable");
        jCIntercable.setBounds(20, 120, 180, 23);
        jLayeredPane1.add(jCIntercable, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCMCI.setBackground(new java.awt.Color(255, 255, 255));
        jCMCI.setText("MCI / Verizon");
        jCMCI.setBounds(20, 160, 170, 23);
        jLayeredPane1.add(jCMCI, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCNetUno.setBackground(new java.awt.Color(255, 255, 255));
        jCNetUno.setText("CABLETEL / NETUNO");
        jCNetUno.setBounds(20, 100, 140, 23);
        jLayeredPane1.add(jCNetUno, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCUnete.setBackground(new java.awt.Color(255, 255, 255));
        jCUnete.setText("Unete");
        jCUnete.setBounds(210, 60, 140, 23);
        jLayeredPane1.add(jCUnete, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCTutopia.setBackground(new java.awt.Color(255, 255, 255));
        jCTutopia.setText("Tutopia");
        jCTutopia.setBounds(210, 80, 120, 23);
        jLayeredPane1.add(jCTutopia, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCIMPSAT.setBackground(new java.awt.Color(255, 255, 255));
        jCIMPSAT.setText("IMPSAT / GLOBAL CROSSING");
        jCIMPSAT.setBounds(210, 100, 200, 20);
        jLayeredPane1.add(jCIMPSAT, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jTOtros.setEnabled(false);
        jTOtros.setBounds(280, 120, 90, 20);
        jLayeredPane1.add(jTOtros, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCOtro.setBackground(new java.awt.Color(255, 255, 255));
        jCOtro.setText("Otro");
        jCOtro.setBounds(210, 120, 70, 23);
        jLayeredPane1.add(jCOtro, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBAgregarProveedorNuevo.setText("Agregar otro Proveedor");
        jBAgregarProveedorNuevo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBAgregarProveedorNuevoActionPerformed(evt);
            }
        });
        jBAgregarProveedorNuevo.setBounds(210, 190, 190, 23);
        jLayeredPane1.add(jBAgregarProveedorNuevo, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLayeredPane1.setBounds(10, 156, 850, 240);
        jLayeredPane3.add(jLayeredPane1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLTimer.setText("jLabel12");
        jLTimer.setBounds(790, 20, 60, 14);
        jLayeredPane3.add(jLTimer, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBAceptarCantidad.setText("Aceptar");
        jBAceptarCantidad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBAceptarCantidadActionPerformed(evt);
            }
        });
        jBAceptarCantidad.setBounds(230, 130, 100, 23);
        jLayeredPane3.add(jBAceptarCantidad, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Vista/Imagenes/fondoBlanco.png"))); // NOI18N
        jLabel8.setText("jLabel8");
        jLabel8.setBounds(0, 0, 940, 700);
        jLayeredPane3.add(jLabel8, javax.swing.JLayeredPane.DEFAULT_LAYER);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLayeredPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 940, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLayeredPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 387, Short.MAX_VALUE)
        );

        setSize(new java.awt.Dimension(956, 425));
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents
    
    private void jBFinalizarSeleccionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBFinalizarSeleccionActionPerformed

        
if (JOptionPane.showConfirmDialog(null,"¿Está seguro de la selección realizada?"
            + "","Información",
            JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION){

    jCProveedoresTabla.removeAllItems();
    jCProveedoresTabla.addItem("- Seleccione");
    
        if (jCCantv.isSelected())
            jCProveedoresTabla.addItem("Cantv");
        
        if (jCMovistar.isSelected())
            jCProveedoresTabla.addItem("Movistar / Telefónica");
        
        if (jCNetUno.isSelected())
            jCProveedoresTabla.addItem("CABLETEL / NETUNO");
        
        if (jCIntercable.isSelected())
            jCProveedoresTabla.addItem("Intercable");
        
        if (jCSupercable.isSelected())
            jCProveedoresTabla.addItem("Supercable");
        
        if (jCMCI.isSelected())
            jCProveedoresTabla.addItem("MCI / Verizon");
        
        if (jCUnete.isSelected())
            jCProveedoresTabla.addItem("Unete");
        
        if (jCTutopia.isSelected())
            jCProveedoresTabla.addItem("Tutopia");
        
        if (jCIMPSAT.isSelected())
            jCProveedoresTabla.addItem("IMPSAT / GLOBAL CROSSING");
        
        if (jCOtro.isSelected())
            jCProveedoresTabla.addItem("Otro");
                       
            if (proveedores.size() == 1) {
                esUnProveedor = true;
            }
            
            this.setMinimumSize(new Dimension(903,730));
                    Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
                    Dimension ventana = getSize();
                this.setLocation((pantalla.width - ventana.width) / 2,
                                (pantalla.height - ventana.height) / 2);
            bloquearRadios();
            
            jBAgregarProveedorNuevo.setEnabled(true);
           jBFinalizarSeleccion.setEnabled(false);
           jComboVelocidades.setEnabled(true);
           jComboPaisesCiudades.setEnabled(true); 
           jBAgregarInfoTabla.setEnabled(true);
           jTCuentasProveedor.setEnabled(true);
           
           jLCuentaActualizada.setText("Cuentas faltantes por registrar: "+cuentasTotales);
            
        } else {
            JOptionPane.showMessageDialog(null, "Debe Seleccionar al menos "
                    + "un proveedor", "Error", JOptionPane.ERROR_MESSAGE);
        }
        
    
    }//GEN-LAST:event_jBFinalizarSeleccionActionPerformed
        
    private void jBAgregarInfoTablaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBAgregarInfoTablaActionPerformed

        // Validación para primer o último nodo.        

        if ((proveedores.size() - 1) == 0) {
            esUnProveedor = true;
        }
    if (primeraVez){
        
        if (!contieneLetras(jTCuentasProveedor.getText())) {
            
             if (cuentasTotales-Integer.parseInt(jTCuentasProveedor.getText()) >= 0){
                
                cuentasTotales = cuentasTotales-Integer.parseInt(jTCuentasProveedor.getText());
                
                jLCuentaActualizada.setText("Cuentas faltantes por registrar: "+cuentasTotales);

                   
                        InsertarEnTabla(jCProveedoresTabla.getSelectedItem().toString(),
                                jTCuentasProveedor.getText(),
                                jComboPaisesCiudades.getSelectedItem().toString(),
                                jComboVelocidades.getSelectedItem().toString()); // Insertar en tabla.

                        jTCuentasProveedor.setText("");
                        jComboVelocidades.setSelectedIndex(0);
                        jCProveedoresTabla.setSelectedIndex(0);
                        jComboPaisesCiudades.setSelectedIndex(0);
               }            
              else
              JOptionPane.showMessageDialog(null,"No se pueden "
                      + "registrar esa cantidad de cuentas"
                    ,"Error",JOptionPane.ERROR_MESSAGE);  
        }    
        else {
             JOptionPane.showMessageDialog(null,"La cantidad debe ser numérica"
                    ,"Error",JOptionPane.ERROR_MESSAGE);
        }
      }
      else
     {
          if  (!contieneLetras(jTCuentasProveedor.getText())){         
                
            InsertarEnTabla(jCProveedoresTabla.getSelectedItem().toString(),
                            jTCuentasProveedor.getText(),
                            jComboPaisesCiudades.getSelectedItem().toString(),
                            jComboVelocidades.getSelectedItem().toString()); // Insertar en tabla.
 
                 
                    jTCuentasProveedor.setText("");
                    jCProveedoresTabla.setSelectedIndex(0);
                        jComboVelocidades.setSelectedIndex(0);
                        jComboPaisesCiudades.setSelectedIndex(0);
             
          }
          else
            JOptionPane.showMessageDialog(null,"La cantidad debe ser numérica"
                    ,"Error",JOptionPane.ERROR_MESSAGE);
      }    
        
    }//GEN-LAST:event_jBAgregarInfoTablaActionPerformed
                                        
    private void JBPrevActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JBPrevActionPerformed
       try {
            this.setVisible(false);
            LogicaAplicacion.mostrarPantallaRegreso(this.getPosicionActual() - 1);
        } catch (Exception ex) {
            this.setVisible(true);
            JOptionPane.showMessageDialog(null,ex.getMessage());
        }
    }//GEN-LAST:event_JBPrevActionPerformed

    private void jBAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBAceptarActionPerformed
        primeraVez = false;
        actualizarTabla();
        LogicaAplicacion.actualizarPantalla(numPreg, this);
        
        int cuentaActual = LogicaAplicacion.getContarInternet();
                        
            LogicaAplicacion.setContarInternet(cuentaActual-1);

             if (LogicaAplicacion.getContarInternet() == 0){
                 if (!this.fuePrevia){
                        System.out.println("Agregar la pantalla a la lista, y ya!");
                        this.servicios.remove(0);
                        FactoryVistas.obtenerSiguientePregunta(servicios, minutos, segundos, horas,this.getPosicionActual()+1).setVisible(true);
                        this.setVisible(false);
                    }
                   else {
                        System.out.println("No voy a remover de la lista de servicios, ni insertare en la lista... pero actualizare");
                        LogicaAplicacion.mostrarPantallaSiguiente(this.getPosicionActual()+1);
                        this.setVisible(false);
                   }
             }
             else {
                 System.out.println("Aun no..");
                 
                    if (!this.fuePrevia){
                        System.out.println("Agregar la pantalla a la lista, y ya!");
                        this.servicios.remove(0);
                        FactoryVistas.obtenerSiguientePregunta(servicios, minutos, segundos, horas,this.getPosicionActual()+1).setVisible(true);
                        this.setVisible(false);
                }
               else {
                    System.out.println("No voy a remover de la lista de servicios, ni insertare en la lista... pero actualizare");
                    LogicaAplicacion.mostrarPantallaSiguiente(this.getPosicionActual()+1);
                    this.setVisible(false);
               }
                 
             }
    }//GEN-LAST:event_jBAceptarActionPerformed

    private void jBAgregarTablaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBAgregarTablaActionPerformed
     if (!contieneLetras(jTCantidad.getText())){
         InsertarEnTabla(jCProveedores.getSelectedItem().toString(),
                jTCantidad.getText(),
                jComboPaisesCiudadesDinamico.getSelectedItem().toString(),
                jComboVelocidadesDinamico.getSelectedItem().toString());
        jCProveedores.setSelectedIndex(0);
        jComboPaisesCiudadesDinamico.setSelectedIndex(0);
        jTCantidad.setText("");
     }
     else JOptionPane.showMessageDialog(null,"No se pueden agregar campos no numéricos","ERROR",JOptionPane.ERROR_MESSAGE);
}//GEN-LAST:event_jBAgregarTablaActionPerformed

    private void jBAgregarProveedorNuevoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBAgregarProveedorNuevoActionPerformed
        jBAgregarProveedorNuevo.setEnabled(false);
        jBFinalizarSeleccion.setEnabled(true);

        if (!jCCantv.isSelected()){
            jCCantv.setEnabled(true);
        }
        if (!jCSupercable.isSelected()){
            jCSupercable.setEnabled(true);
        }
        if (!jCIntercable.isSelected()){
            jCIntercable.setEnabled(true);
        }
        if (!jCUnete.isSelected()){
            jCUnete.setEnabled(true);
        }
        if (!jCTutopia.isSelected()){
            jCTutopia.setEnabled(true);
        }
        if (!jCNetUno.isSelected()){
            jCNetUno.setEnabled(true);
        }
        if (!jCIMPSAT.isSelected()){
            jCIMPSAT.setEnabled(true);
        }
        if (!jCMovistar.isSelected()){
            jCMovistar.setEnabled(true);
        }
        if (!jCMCI.isSelected()){
            jCMCI.setEnabled(true);
        }
        if (!jCOtro.isSelected()){
            jCOtro.setEnabled(true);
        }

        jComboVelocidades.setEnabled(false);
           jComboPaisesCiudades.setEnabled(false); 
           jBAgregarInfoTabla.setEnabled(false);
           jTCuentasProveedor.setEnabled(false);
           
    }//GEN-LAST:event_jBAgregarProveedorNuevoActionPerformed

    private void jBAceptarCantidadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBAceptarCantidadActionPerformed
        if (JOptionPane.showConfirmDialog(null,"¿Está seguro de la seleccion realizada?"
            + "","Información",
            JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION){
        if (!contieneLetras(jTCuentas.getText())){
            this.cuentasTotales = Integer.parseInt(jTCuentas.getText());
            jTCuentas.setEnabled(false);
        }
        else {
            JOptionPane.showMessageDialog(null,"La cantidad debe ser numérica"
                ,"Error",JOptionPane.ERROR_MESSAGE);
        }
        }
    }//GEN-LAST:event_jBAceptarCantidadActionPerformed
    private void actualizarTabla(){
        
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {

                  historica = new Historica();

                    for (int j = 0; j < this.jTInformacionProveedores.getColumnCount(); j++) {
                        switch (j){

                         case 0:  historica.setProveedor(this.jTInformacionProveedores.
                                     getValueAt(i,j).toString());
                                 break;

                         case 1: historica.setLug_id(new LogicaLugar().obtenerIdLugar(
                                 this.jTInformacionProveedores.
                                     getValueAt(i,j).toString()));
                                 break;

                         case 2: historica.setCantidad(Integer.
                                 parseInt(this.jTInformacionProveedores.
                                     getValueAt(i,j).toString()));
                                 break;

//                                case 3: historica.setDis_id(new LogicaDispositivo().
//                                        obtenerIdDispositivo(sustituirAcentos
//                                        (this.jTInformacionProveedores.
//                                            getValueAt(i,j).toString())));
//                                        break;
                        }
                    }
                    inserts.add(historica);
                 }

                 LogicaAplicacion.setP11ct(obtenerCuentasDedicadoTotales());

            LogicaAplicacion.setP11c_c1(obtenerCuentasDedicadoTotalesPorRegion(1));
            LogicaAplicacion.setP11c_c2(obtenerCuentasDedicadoTotalesPorRegion(2));
            LogicaAplicacion.setP11c_c3(obtenerCuentasDedicadoTotalesPorRegion(3));
            LogicaAplicacion.setP11c_c4(obtenerCuentasDedicadoTotalesPorRegion(4));
            LogicaAplicacion.setP11c_c5(obtenerCuentasDedicadoTotalesPorRegion(5));
            LogicaAplicacion.setP11c_c6(obtenerCuentasDedicadoTotalesPorRegion(6));
            
            LogicaAplicacion.setP11c_f1(contarCuentasDedicadoPorProveedor("Cantv"));
            LogicaAplicacion.setP11c_f2(contarCuentasDedicadoPorProveedor("Movistar / Telefónica"));       
            LogicaAplicacion.setP11c_f4(contarCuentasDedicadoPorProveedor("Intercable"));
            LogicaAplicacion.setP11c_f5(contarCuentasDedicadoPorProveedor("Supercable"));
            LogicaAplicacion.setP11c_f6(contarCuentasDedicadoPorProveedor("CABLETEL / NETUNO"));
            LogicaAplicacion.setP11c_f7(contarCuentasDedicadoPorProveedor("MCI / Verizon"));
            LogicaAplicacion.setP11c_f8(contarCuentasDedicadoPorProveedor("Unete"));
            LogicaAplicacion.setP11c_f9(contarCuentasDedicadoPorProveedor("Tutopia"));
            LogicaAplicacion.setP11c_f10(contarCuentasDedicadoPorProveedor("IMPSAT / GLOBAL CROSSING"));
            LogicaAplicacion.setP11c_f11(contarCuentasDedicadoPorProveedor("Otro"));
            
            LogicaAplicacion.setP11ca_1(contarCuentasDedicadoPorProveedorRegion("Cantv",1));
            LogicaAplicacion.setP11ca_2(contarCuentasDedicadoPorProveedorRegion("Movistar / Telefónica",1));
            //LogicaAplicacion.setP11ca_3(contarCuentasDedicadoPorProveedorRegion("BT Latam (Comsat)",1));
            LogicaAplicacion.setP11ca_4(contarCuentasDedicadoPorProveedorRegion("Intercable",1));
            LogicaAplicacion.setP11ca_5(contarCuentasDedicadoPorProveedorRegion("Supercable",1));
            LogicaAplicacion.setP11ca_6(contarCuentasDedicadoPorProveedorRegion("MCI / Verizon",1));
            LogicaAplicacion.setP11ca_7(contarCuentasDedicadoPorProveedorRegion("Unete",1));
            LogicaAplicacion.setP11ca_8(contarCuentasDedicadoPorProveedorRegion("Net Uno",1));
            LogicaAplicacion.setP11ca_9(contarCuentasDedicadoPorProveedorRegion("Tutopia",1));
            LogicaAplicacion.setP11ca_10(contarCuentasDedicadoPorProveedorRegion("IMPSAT / GLOBAL CROSSING",1));
            LogicaAplicacion.setP11ca_11(contarCuentasDedicadoPorProveedorRegion("Otro",1));
            
            LogicaAplicacion.setP11cb_1(contarCuentasDedicadoPorProveedorRegion("Cantv",2));
            LogicaAplicacion.setP11cb_2(contarCuentasDedicadoPorProveedorRegion("Movistar / Telefónica",2));
            //LogicaAplicacion.setP11cb_3(contarCuentasDedicadoPorProveedorRegion("BT Latam (Comsat)",2));
            LogicaAplicacion.setP11cb_4(contarCuentasDedicadoPorProveedorRegion("Intercable",2));
            LogicaAplicacion.setP11cb_5(contarCuentasDedicadoPorProveedorRegion("Supercable",2));
            LogicaAplicacion.setP11cb_6(contarCuentasDedicadoPorProveedorRegion("MCI / Verizon",2));
            LogicaAplicacion.setP11cb_7(contarCuentasDedicadoPorProveedorRegion("Unete",2));
            LogicaAplicacion.setP11cb_8(contarCuentasDedicadoPorProveedorRegion("Net Uno",2));
            LogicaAplicacion.setP11cb_9(contarCuentasDedicadoPorProveedorRegion("Tutopia",2));
            LogicaAplicacion.setP11cb_10(contarCuentasDedicadoPorProveedorRegion("IMPSAT / GLOBAL CROSSING",2));
            LogicaAplicacion.setP11cb_11(contarCuentasDedicadoPorProveedorRegion("Otro",2));
            
            LogicaAplicacion.setP11cc_1(contarCuentasDedicadoPorProveedorRegion("Cantv",3));
            LogicaAplicacion.setP11cc_2(contarCuentasDedicadoPorProveedorRegion("Movistar / Telefónica",3));
            //LogicaAplicacion.setP11cc_3(contarCuentasDedicadoPorProveedorRegion("BT Latam (Comsat)",3));
            LogicaAplicacion.setP11cc_4(contarCuentasDedicadoPorProveedorRegion("Intercable",3));
            LogicaAplicacion.setP11cc_5(contarCuentasDedicadoPorProveedorRegion("Supercable",3));
            LogicaAplicacion.setP11cc_6(contarCuentasDedicadoPorProveedorRegion("MCI / Verizon",3));
            LogicaAplicacion.setP11cc_7(contarCuentasDedicadoPorProveedorRegion("Unete",3));
            LogicaAplicacion.setP11cc_8(contarCuentasDedicadoPorProveedorRegion("Net Uno",3));
            LogicaAplicacion.setP11cc_9(contarCuentasDedicadoPorProveedorRegion("Tutopia",3));
            LogicaAplicacion.setP11cc_10(contarCuentasDedicadoPorProveedorRegion("IMPSAT / GLOBAL CROSSING",3));
            LogicaAplicacion.setP11cc_11(contarCuentasDedicadoPorProveedorRegion("Otro",3));
            
            LogicaAplicacion.setP11cd_1(contarCuentasDedicadoPorProveedorRegion("Cantv",4));
            LogicaAplicacion.setP11cd_2(contarCuentasDedicadoPorProveedorRegion("Movistar / Telefónica",4));
            //LogicaAplicacion.setP11cd_3(contarCuentasDedicadoPorProveedorRegion("BT Latam (Comsat)",4));
            LogicaAplicacion.setP11cd_4(contarCuentasDedicadoPorProveedorRegion("Intercable",4));
            LogicaAplicacion.setP11cd_5(contarCuentasDedicadoPorProveedorRegion("Supercable",4));
            LogicaAplicacion.setP11cd_6(contarCuentasDedicadoPorProveedorRegion("MCI / Verizon",4));
            LogicaAplicacion.setP11cd_7(contarCuentasDedicadoPorProveedorRegion("Unete",4));
            LogicaAplicacion.setP11cd_8(contarCuentasDedicadoPorProveedorRegion("Net Uno",4));
            LogicaAplicacion.setP11cd_9(contarCuentasDedicadoPorProveedorRegion("Tutopia",4));
            LogicaAplicacion.setP11cd_10(contarCuentasDedicadoPorProveedorRegion("IMPSAT / GLOBAL CROSSING",4));
            LogicaAplicacion.setP11cd_11(contarCuentasDedicadoPorProveedorRegion("Otro",4));
            
            LogicaAplicacion.setP11ce_1(contarCuentasDedicadoPorProveedorRegion("Cantv",5));
            LogicaAplicacion.setP11ce_2(contarCuentasDedicadoPorProveedorRegion("Movistar / Telefónica",5));
            //LogicaAplicacion.setP11ce_3(contarCuentasDedicadoPorProveedorRegion("BT Latam (Comsat)",5));
            LogicaAplicacion.setP11ce_4(contarCuentasDedicadoPorProveedorRegion("Intercable",5));
            LogicaAplicacion.setP11ce_5(contarCuentasDedicadoPorProveedorRegion("Supercable",5));
            LogicaAplicacion.setP11ce_6(contarCuentasDedicadoPorProveedorRegion("MCI / Verizon",5));
            LogicaAplicacion.setP11ce_7(contarCuentasDedicadoPorProveedorRegion("Unete",5));
            LogicaAplicacion.setP11ce_8(contarCuentasDedicadoPorProveedorRegion("Net Uno",5));
            LogicaAplicacion.setP11ce_9(contarCuentasDedicadoPorProveedorRegion("Tutopia",5));
            LogicaAplicacion.setP11ce_10(contarCuentasDedicadoPorProveedorRegion("IMPSAT / GLOBAL CROSSING",5));
            LogicaAplicacion.setP11ce_11(contarCuentasDedicadoPorProveedorRegion("Otro",5));
            
            if (RegionCapitalUsaVelocidadAlta()){
                 System.out.println("Region Capital con velocidad Alta");
                 LogicaAplicacion.setP13ba_1(1);
             }

             if (RegionCapitalUsaVelocidadMedia()){
                System.out.println("Region Capital con velocidad Media");
                LogicaAplicacion.setP13ba_2(2);
             }
             
             if (RegionCapitalUsaVelocidadBaja()){
                 System.out.println("Region Capital con velocidad Baja");
                 LogicaAplicacion.setP13ba_3(3);
             }
             
             
             if (RegionCentralUsaVelocidadAlta()){
                 System.out.println("Region Central con velocidad Alta");
                 LogicaAplicacion.setP13bb_1(1);
             }

             if (RegionCentralUsaVelocidadMedia()){
                 System.out.println("Region Central con velocidad Media");
                 LogicaAplicacion.setP13bb_2(2);
             }
             
             if (RegionCentralUsaVelocidadBaja()){
                 System.out.println("Region Central con velocidad Baja");
                 LogicaAplicacion.setP13bb_3(3);
             }
             
             
             if (RegionCentroOccidentalUsaVelocidadAlta()){
                 System.out.println("Region Centro Occidental con velocidad Alta");
                 LogicaAplicacion.setP13bc_1(1);
             }

             if (RegionCentroOccidentalUsaVelocidadMedia()){
                 System.out.println("Region Centro Occidental con velocidad Media");
                 LogicaAplicacion.setP13bc_2(2);
             }
             
             if (RegionCentroOccidentalUsaVelocidadBaja()){
                 System.out.println("Region Centro Occidental con velocidad Baja");
                 LogicaAplicacion.setP13bc_3(3);
             }
             
             if (RegionOccidentalUsaVelocidadAlta()){
                 System.out.println("Region Occidental con velocidad Alta");
                 LogicaAplicacion.setP13bd_1(1);
             }

             if (RegionOccidentalUsaVelocidadMedia()){
                System.out.println("Region Occidental con velocidad Media");
                LogicaAplicacion.setP13bd_2(2);
             }
             
             if (RegionOccidentalUsaVelocidadBaja()){
                 System.out.println("Region Occidental con velocidad Baja");
                 LogicaAplicacion.setP13bd_3(3);
             }
             
             if (RegionOrientalUsaVelocidadAlta()){
                 System.out.println("Region Oriental con velocidad Alta");
                 LogicaAplicacion.setP13be_1(1);
             }

             if (RegionOrientalUsaVelocidadMedia()){
                 System.out.println("Region Oriental con velocidad Media");
                 LogicaAplicacion.setP13be_2(2);
             }
             
             if (RegionOrientalUsaVelocidadBaja()){
                 System.out.println("Region Capital con velocidad Baja");
                 LogicaAplicacion.setP13be_3(3);
             }
             
    }
    private Boolean contieneLetras(String cadena) {
        matcher = patron.matcher(cadena);
        
        if (matcher.find()) {
            return true;
        } else {
            return false;
        }
    }
    
    private void bloquearRadios() {
        jCCantv.setEnabled(false);
        jCIMPSAT.setEnabled(false);
        jCSupercable.setEnabled(false);
        jCIntercable.setEnabled(false);
        jCUnete.setEnabled(false);
        jCMCI.setEnabled(false);
        jCMovistar.setEnabled(false);
        jCTutopia.setEnabled(false);
        jCNetUno.setEnabled(false);
        jCOtro.setEnabled(false);
    }
    
    private int obtenerCuentasDedicadoTotales(){
        int total = 0;
            for (Historica hist: this.getInserts())
                total = total + hist.getCantidad();
            
        return total;
    }
    
    private int obtenerCuentasDedicadoTotalesPorRegion(int region){
      int total = 0; 
        for (Historica hist: this.getInserts())
            if (hist.getLug_id() == region)
                total = total + hist.getCantidad();
        return total;
    }
    
    private int contarCuentasDedicadoPorProveedor(String proveedor){
        int total = 0; 
        for (Historica hist: this.getInserts())
            if (hist.getProveedor().equals(proveedor))
                total = total + hist.getCantidad();
        return total;
    }
    
    private int contarCuentasDedicadoPorProveedorRegion(String proveedor, int region){
        int total = 0;
        
        for (Historica hist: this.getInserts())
            if (hist.getProveedor().equals(proveedor) && hist.getLug_id() == region)
                total = total + hist.getCantidad();
        
        return total;
    }
    
    private void InsertarEnTabla(String proveedor, String cuentas,
            String ciudad, String velocidad) {
        ((DefaultTableModel) this.jTInformacionProveedores.getModel()).
                insertRow(0, new Object[]{proveedor, ciudad, cuentas,velocidad});
    }
    
    private void desbloquearOpciones() {
        jComboPaisesCiudades.setEnabled(true);
        jBAgregarInfoTabla.setEnabled(true);
        jComboVelocidades.setEnabled(true);
    }
    
    private String sustituirAcentos(String input) {
        // Cadena de caracteres original a sustituir.
        String original = "áàäéèëíìïóòöúùuñÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑçÇ";
        // Cadena de caracteres ASCII que reemplazarán los originales.
        String ascii = "aaaeeeiiiooouuunAAAEEEIIIOOOUUUNcC";
        String output = input;
        for (int i = 0; i < original.length(); i++) {
            // Reemplazamos los caracteres especiales.
            output = output.replace(original.charAt(i), ascii.charAt(i));
        }//for i
        return output;
    }
    
    private void borrarProveedor(String proveedor) {
        for (int i = 0; i < proveedores.size(); i++) {
            if (proveedores.get(i).getProv_nombre().equals(proveedor)) {
                proveedores.remove(i);
            }
        }
    }
    
    private void agregarProveedor(String proveedor) {
        boolean existe = false;
        for (Proveedor d : proveedores) {
            if (d.getProv_nombre().equals(proveedor)) {
                existe = true;
            }
        }
        
        if (!existe) {
            proveedores.add(new Proveedor(sustituirAcentos(proveedor)));
        }
    }
    
    private Boolean RegionCapitalUsaVelocidadAlta(){
      
      int region = 1;
      String velocidad = "Alta";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionCapitalUsaVelocidadMedia(){
    int region = 1;
      String velocidad = "Media";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionCapitalUsaVelocidadBaja(){
      int region = 1;
      String velocidad = "Baja";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }


    private Boolean RegionCentralUsaVelocidadAlta(){
int region = 2;
      String velocidad = "Alta";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionCentralUsaVelocidadMedia(){
      int region = 2;
      String velocidad = "Media";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionCentralUsaVelocidadBaja(){
        int region = 2;
      String velocidad = "Baja";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }


    private Boolean RegionCentroOccidentalUsaVelocidadAlta(){
        int region = 3;
      String velocidad = "Alta";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionCentroOccidentalUsaVelocidadMedia(){
        int region = 3;
      String velocidad = "Media";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionCentroOccidentalUsaVelocidadBaja(){
      int region = 3;
      String velocidad = "Baja";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionOccidentalUsaVelocidadAlta(){
      int region = 4;
      String velocidad = "Alta";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionOccidentalUsaVelocidadMedia(){
        int region = 4;
      String velocidad = "Media";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionOccidentalUsaVelocidadBaja(){
        int region = 4;
      String velocidad = "Baja";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionOrientalUsaVelocidadAlta(){
        int region = 6;
      String velocidad = "Alta";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionOrientalUsaVelocidadMedia(){
        int region = 6;
      String velocidad = "Media";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }

    private Boolean RegionOrientalUsaVelocidadBaja(){
        int region = 6;
      String velocidad = "Baja";
      int regionTabla = 0;
      String velocidadTabla = "";
      
        for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
           
            regionTabla = new LogicaLugar().obtenerIdLugar(this.jTInformacionProveedores.getValueAt(i,1).toString());
            velocidadTabla = this.jTInformacionProveedores.getValueAt(i,3).toString();
           
             if (regionTabla == region && velocidad.equals(velocidadTabla)){
                 return true;
             }
        }
      return false;
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new RegistroInternetDedicado().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton JBPrev;
    private javax.swing.JButton jBAceptar;
    private javax.swing.JButton jBAceptarCantidad;
    private javax.swing.JButton jBAgregarInfoTabla;
    private javax.swing.JButton jBAgregarProveedorNuevo;
    private javax.swing.JButton jBAgregarTabla;
    private javax.swing.JButton jBFinalizarSeleccion;
    private javax.swing.JCheckBox jCCantv;
    private javax.swing.JCheckBox jCIMPSAT;
    private javax.swing.JCheckBox jCIntercable;
    private javax.swing.JCheckBox jCMCI;
    private javax.swing.JCheckBox jCMovistar;
    private javax.swing.JCheckBox jCNetUno;
    private javax.swing.JCheckBox jCOtro;
    private javax.swing.JComboBox jCProveedores;
    private javax.swing.JComboBox jCProveedoresTabla;
    private javax.swing.JCheckBox jCSupercable;
    private javax.swing.JCheckBox jCTutopia;
    private javax.swing.JCheckBox jCUnete;
    private javax.swing.JComboBox jComboPaisesCiudades;
    private javax.swing.JComboBox jComboPaisesCiudadesDinamico;
    private javax.swing.JComboBox jComboVelocidades;
    private javax.swing.JComboBox jComboVelocidadesDinamico;
    private javax.swing.JLabel jLCuentaActualizada;
    private javax.swing.JLabel jLInformacionProveedor;
    private javax.swing.JLabel jLLogo;
    private javax.swing.JLabel jLSponsor;
    private javax.swing.JLabel jLTimer;
    private javax.swing.JLabel jLTitulo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JLayeredPane jLayeredPane1;
    private javax.swing.JLayeredPane jLayeredPane2;
    private javax.swing.JLayeredPane jLayeredPane3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextField jTCantidad;
    private javax.swing.JTextArea jTComentarios;
    private javax.swing.JTextField jTCuentas;
    private javax.swing.JTextField jTCuentasProveedor;
    private javax.swing.JTable jTInformacionProveedores;
    private javax.swing.JTextField jTOtros;
    // End of variables declaration//GEN-END:variables

    public void run() {
        try {
            while (inicio) {
                
                if (segundos != 59) {
                    segundos++;
                } else {
                    if (minutos != 59) {
                        segundos = 0;
                        minutos++;
                    } else {
                        horas++;
                        minutos = 0;
                        segundos = 0;
                    }
                }
                
                if (minutos >= 10) {
                    jLTimer.setForeground(Color.red);
                }
                
                jLTimer.setText(horas + ":" + minutos + ":" + segundos);
                
                Thread.sleep(999);
            }
            
        } catch (InterruptedException ex) {
            System.out.println("Error en el sleep de aplicacion = " + ex.getMessage());
        }
    }
}
